#define  _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<vector>

using namespace std;


//乘积最正数的最长子数组的长度
//这个确实是考验多状态问题的分析能力
//关键在于根据nums[i]的正负去判断条件，还有就是一定要把状态所表示的是什么理解明白
//最后也是感觉这个题最难的地方就是判断法g[i-1]和f[i-1]存不存在，需不需要考虑的问题

class Solution {
public:
    int getMaxLen(vector<int>& nums) {
        int n = nums.size();

        //创建dp表
        vector<int> f(n + 1), g(n + 1);
        //填表
        int ret = INT_MIN;
        for (int i = 1; i <= n; i++)
        {
            if (nums[i - 1] > 0)
            {
                f[i] = f[i - 1] + 1;
                g[i] = g[i - 1] == 0 ? 0 : g[i - 1] + 1;
            }
            else if (nums[i - 1] < 0)
            {
                f[i] = g[i - 1] == 0 ? 0 : g[i - 1] + 1;
                g[i] = f[i - 1] + 1;
            }
            ret = max(ret, f[i]);

        }
        //返回值
        return ret;

    }
};



int main()
{


	return 0;
}